package vamp_serviceweb

import org.codehaus.groovy.grails.commons.ConfigurationHolder

class GeocoderService {

    static transactional = true

    def config = ConfigurationHolder.config

    def serviceMethod() {

    }

    /**
     * Service charg� de r�cup�rer la longitude et la latitude renvoy� par le WS de Google
     * @param adresse (String)
     * @return result.lat, result.lng (Double)
     */
    def reverseGeocode(String adresse)
    {
        //def url = new URL(config.tokidev.bms_iphone.googleRestWs+adresse)
        def url = new URL("http://maps.googleapis.com/maps/api/geocode/xml?address="+URLEncoder.encode(adresse)+"&sensor=true")
        println(url)
        def connexion = url.openConnection()

        def result = [:]
        result.lat = 0
        result.lng = 0
        if (connexion.responseCode == 200)
        {
            def xml             = connexion.content.text
            System.out.println(xml)
            def GeocodeResponse = new XmlSlurper().parseText(xml)
            try
            {
                if (GeocodeResponse.result.geometry.location.lat != "")
                    result.lat      = Double.parseDouble(GeocodeResponse.result.geometry.location.lat.toString())
                if (GeocodeResponse.result.geometry.location.lng != "")
                    result.lng      = Double.parseDouble(GeocodeResponse.result.geometry.location.lng.toString())
            }
            catch (Exception e)
            {
                System.out.println("Erreur lors de la request a Google pour recuperation des coordonn�es, le retour est mal format� ou les indications ont donn� des r�sultats multiples - adresse : "+adresse+" Exception : "+e)
            }
        }
        else
        {
            System.out.println("Erreur lors du parsing du retour google !")
        }
        return result
    }
}
/*
	
config.tokidev.bms_iphone.googleRestWs fait r�f�rence � un item dans un fichier de config ( Config.groovy ) ce qui est utile lorsque l'on veux externaliser des r�glages
la ligne correspondante dans le fichier de config est : 

tokidev.bms_iphone.googleRestWs = http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&address=
		
 */  
